function obj = guessByteOrder(obj)
% Use format code to guess if file is big or little-endian
%
% function obj = guessByteOrder(obj)
%
% Read SEG-Y binary file header format code and determine if the file is
% big-endian (SEG-Y standard) or little-endian (Most modern computers)
%
% Theory:
%   The data format code in the SEG-Y binary file header
%   will be out of range [1,8] if it is read using
%   the wrong byte order.
%
% Function sets obj.ByteOrder to:
% 
%   'b' big-endian (SEG-Y standard)
%   'l' little-endian (PC byte order)
%
% NOTE: This SOFTWARE may be used by any individual or corporation for any purpose
% with the exception of re-selling or re-distributing the SOFTWARE.
% By using this software, you are agreeing to the terms detailed in this software's
% Matlab source file.

% BEGIN TERMS OF USE LICENSE
%
% This SOFTWARE is maintained by the CREWES Project at the Department
% of Geology and Geophysics of the University of Calgary, Calgary,
% Alberta, Canada.  The copyright and ownership is jointly held by
% its 'AUTHOR' (identified above) and the CREWES Project.  The CREWES
% project may be contacted via email at:  crewesinfo@crewes.org
%
% The term 'SOFTWARE' refers to the Matlab source code, translations to
% any other computer language, or object code
%
% Terms of use of this SOFTWARE
%
% 1) This SOFTWARE may be used by any individual or corporation for any purpose
%    with the exception of re-selling or re-distributing the SOFTWARE.
%
% 2) The AUTHOR and CREWES must be acknowledged in any resulting publications or
%    presentations
%
% 3) This SOFTWARE is provided "as is" with no warranty of any kind
%    either expressed or implied. CREWES makes no warranties or representation
%    as to its accuracy, completeness, or fitness for any purpose. CREWES
%    is under no obligation to provide support of any kind for this SOFTWARE.
%
% 4) CREWES periodically adds, changes, improves or updates this SOFTWARE without
%    notice. New versions will be made available at www.crewes.org .
%
% 5) Use this SOFTWARE at your own risk.
%
% END TERMS OF USE LICENSE

%Test for byte order

if obj.fsize() >= obj.OFFSET+obj.HDRSIZE
    fseek(obj.FileID,obj.OFFSET+24,'bof');
    le_fmt_code = fread(obj.FileID, 1, 'uint16', 0, 'l'); %read little-endian format code
    
    if(le_fmt_code <255)
        obj.ByteOrder = 'l'; %file is little-endian (non-standard SEG-Y)
    else
        obj.ByteOrder = 'b'; %file is big-endian (standard SEG-Y)
    end
end

end %end function